---
title: PXF谓词下推
---

<!--
根据一项或多项贡献者许可协议获得了Apache Software Foundation(ASF)的许可。有关版权拥有权的其他信息，请参见随本作品分发的NOTICE文件。ASF根据Apache许可2.0版(“许可”)向您授予此文件的许可;除非遵守许可，否则不得使用此文件。您可以在以下位置获得许可的副本：
  http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意，否则根据“许可”分发的软件将按“原样”分发，没有任何明示或暗示的保证或条件。请参阅许可证，以了解许可证下管理权限和限制的特定语言。
-->

PXF支持谓词下推。启用谓词下推时,可以提取SELECT查询中WHERE子句的约束并将其传递到外部数据源进行过滤。此过程可以提高查询性能，还可以减少传输到Greenplum数据库的数据量。

通过设置`gp_external_enable_filter_pushdown`服务器配置参数，可以为所有外部表协议（包括pxf）启用或禁用谓词下推。此配置参数的默认值为on;将其设置为关闭以禁用谓词下推。例如：

``` sql
SHOW gp_external_enable_filter_pushdown;
SET gp_external_enable_filter_pushdown TO 'on';
```

**Note:** 某些外部数据源不支持谓词下推。此外，某些数据类型或运算符可能不支持谓词下推。如果查询访问不支持谓词下推的数据源，则执行查询时不进行谓词下推（数据传输到Greenplum数据库后进行过滤）

PXF使用不同的连接器访问数据源，谓词下推支持由特定的连接器实现方式决定。以下PXF连接器支持谓词下推：

- Hive Connector
- HBase Connector
- JDBC Connector


PXF谓词下推可与这些数据类型一起使用（特定连接器）：

- `INT`
- `FLOAT`
- `NUMERIC`
- `BOOL`
- `CHAR`, `TEXT`
- `DATE`, `TIMESTAMP` (JDBC connector only)

这些运算符支持PXF谓词下推

- `<`, `<=`, `>=`, `>`
- `<>`, `=`
- `IN` operator on arrays of `INT` and `TEXT`
- `LIKE` (only for `TEXT` fields) (JDBC connector only)

总而言之，必须满足以下所有条件才能进行谓词下推：

* 将`gp_external_enable_filter_pushdown`服务配置参数设置为`'on'`来启用外部表谓词下推
* 访问外部数据源的Greenplum数据库协议必须支持谓词下推.PXF外部表协议支持下推
* 访问的外部数据源必须支持下推。 例如，HBase和Hive支持下推
* 使用pxf协议创建的外部表查询，基础PXF连接器还必须支持谓词下推。例如，PXF Hive，HBase和JDBC连接器支持下推。